package com.mogist.hqc.module.personal.ui

import android.app.Dialog
import android.content.Intent
import android.support.v7.widget.LinearLayoutManager
import android.view.Gravity
import android.view.WindowManager
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.mogist.hqc.R
import com.mogist.hqc.base.BaseMVPActivity
import com.mogist.hqc.entitys.BaseModel
import com.mogist.hqc.entitys.response.MyCommunityListVo
import com.mogist.hqc.entitys.response.MyCommunityVo
import com.mogist.hqc.module.community.ui.CommunityDetailActivity
import com.mogist.hqc.module.personal.adapter.MyCommunityAdapter
import com.mogist.hqc.module.personal.contract.MyCommunityListContract
import com.mogist.hqc.module.personal.presenter.MyCommunityListPresenter
import com.mogist.hqc.mvp.HttpDto
import com.mogist.hqc.util.Constant
import kotlinx.android.synthetic.main.activity_my_list.*
import kotlinx.android.synthetic.main.include_title.*
import talex.zsw.basecore.view.other.RxToast
import talex.zsw.basecore.view.other.swipetoloadlayout.OnLoadMoreListener
import talex.zsw.basecore.view.other.swipetoloadlayout.OnRefreshListener
import talex.zsw.basecore.view.recyleview.DividerItemDecoration
import talex.zsw.basecore.view.recyleview.SampleFooter
import talex.zsw.basecore.view.recyleview.SampleHeader

/**
 * 作用：我的帖子
 * 作者：赵小白 email:vvtale@gmail.com  
 * 修改人：
 * 修改时间：
 * 修改备注：
 */
class MyCommunityListActivity : BaseMVPActivity<MyCommunityListContract.Presenter>(), MyCommunityListContract.View, OnRefreshListener, OnLoadMoreListener
{
    override fun initArgs(intent: Intent)
    {
    }

    override fun initView()
    {
        setContentView(R.layout.activity_my_list)
        mPresenter = MyCommunityListPresenter(this)
    }

    override fun initData()
    {
        mTitleBar.setTitle("我的帖子")
        initRecyclerView()
        getData(false)
    }

    private val adapter = MyCommunityAdapter()
    private fun initRecyclerView()
    {
        adapter.setOnItemChildClickListener { adapter, view, position ->
            if (!isFastClick)
            {
                val vo = adapter.getItem(position) as MyCommunityVo
                pdtId = vo.id
                when (view.id)
                {
                    R.id.iIvMore   ->
                    {
                        deletePos = position
                        showDeleteDialog()
                    }
                    R.id.iLLDetail ->
                    { // 详情
                        val intent =
                                Intent(this@MyCommunityListActivity,
                                       CommunityDetailActivity::class.java)
                        intent.putExtra("id", vo.id)
                        intent.putExtra("self", true)
                        start(intent)
                    }
                }
            }
        }
        adapter.emptyView =
                SampleHeader(this@MyCommunityListActivity, swipe_target.width, swipe_target.height)
        adapter.isUseEmpty(false)
        adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN)
        swipe_target.addItemDecoration(DividerItemDecoration(DividerItemDecoration.VERTICAL_LIST,
                                                             R.color.transparent))
        swipe_target.layoutManager = LinearLayoutManager(this@MyCommunityListActivity)
        swipe_target.adapter = adapter
        // mRecyclerView.isNestedScrollingEnabled = false
        mSwipeToLoadLayout.setOnRefreshListener(this)
        mSwipeToLoadLayout.setOnLoadMoreListener(this)
        mSwipeToLoadLayout.isLoadMoreEnabled = true
        mSwipeToLoadLayout.isRefreshEnabled = true
    }

    // --------------- 删除帖子 ---------------
    private var deletePos = 0
    private var pdtId = ""
    private var dialog: Dialog? = null
    private fun showDeleteDialog()
    {
        dialog
                ?: let {
                    dialog = Dialog(this@MyCommunityListActivity, R.style.dialog)
                    dialog?.setContentView(R.layout.dialog_delete)
                    dialog?.setCanceledOnTouchOutside(true)
                    val display = window.windowManager.defaultDisplay
                    val layoutParams: WindowManager.LayoutParams = dialog?.window!!.attributes
                    layoutParams.width = (display.width * 1f).toInt()
                    // layoutParams.height = (display.height * 0.8f).toInt()
                    layoutParams.gravity = Gravity.BOTTOM
                    if (layoutParams.gravity == Gravity.BOTTOM)
                    {
                        layoutParams.y = 0
                    }
                    dialog?.window!!.attributes = layoutParams
                    dialog?.findViewById<TextView>(R.id.dTvDelete)
                            ?.setOnClickListener {
                                val body = BaseModel(true)
                                body.pdtId = pdtId
                                mPresenter.getData(HttpDto(Constant.MY_COMMUNITY_DELETE,
                                                           body).setErrorTitle("删除失败"))
                            }
                    dialog?.findViewById<TextView>(R.id.dTvCancel)
                            ?.setOnClickListener {
                                dialog?.dismiss()
                            }
                }
        dialog?.show()
    }

    override fun deleteSuccess()
    {
        disDialog()
        RxToast.success("删除成功")
        adapter.remove(deletePos)
        if (adapter.data.isEmpty())
        {
            onRefresh()
        }
        dialog?.dismiss()
    }

    // --------------- 数据获取 ---------------
    override fun onDestroy()
    {
        super.onDestroy()
        adapter.removeAllFooterView()
        sampleFooter = null
    }

    override fun getData(silence: Boolean)
    {
        val body = BaseModel(true)
        body.page = page.toString()
        mPresenter.getData(HttpDto(Constant.MY_COMMUNITY,
                                   body,
                                   silence).setType(HttpDto.GET).setErrorTitle("获取我的帖子列表失败"))
    }

    var sampleFooter: SampleFooter? = null
    override fun bindData(data: MyCommunityListVo)
    {
        adapter.isUseEmpty(true)
        if (data.list != null && data.list.isNotEmpty())
        {
            if (page == 1)
            {
                adapter.replaceData(data.list)
            }
            else
            {
                adapter.addData(data.list)
            }
            if (data.pages == page)
            {
                sampleFooter
                        ?: let {
                            sampleFooter = SampleFooter(this@MyCommunityListActivity)
                        }
                adapter.setFooterView(sampleFooter)
                mSwipeToLoadLayout.isLoadMoreEnabled = false
            }
            page++
        }
        else
        {
            if (page == 1)
            {
                adapter.replaceData(arrayListOf())
                mSwipeToLoadLayout.isLoadMoreEnabled = false
            }
        }
    }

    private var page = 1

    override fun disLoading()
    {
        mSwipeToLoadLayout.isLoadingMore = false
        mSwipeToLoadLayout.isRefreshing = false
    }

    override fun onRefresh()
    {
        adapter.removeAllFooterView()
        page = 1
        mSwipeToLoadLayout.isLoadMoreEnabled = true
        mSwipeToLoadLayout.isRefreshEnabled = true
        getData(true)
    }

    override fun onLoadMore()
    {
        getData(true)
    }

}